/*******************************************************************************
 * Copyright (c) 2000, 2016 QNX Software Systems and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     QNX Software Systems - Initial API and implementation
 *     Wind River Systems   - Modified for new DSF Reference Implementation
 *     Vladimir Prus (Mentor Graphics) - Add getMIFields/getMIField.
 *******************************************************************************/

package org.eclipse.cdt.dsf.mi.service.command.output;

/**
 * GDB/MI ResultRecord.
 *
 * Effectively, it's an result class (a string), plus token (also a string),
 * plus MI tuple with actual response.
 */
public class MIResultRecord {

    public final static String DONE ="done"; //$NON-NLS-1$
    public final static String RUNNING ="running"; //$NON-NLS-1$
    public final static String CONNECTED ="connected"; //$NON-NLS-1$
    public final static String ERROR ="error"; //$NON-NLS-1$
    public final static String EXIT ="exit"; //$NON-NLS-1$

    String resultClass = ""; //$NON-NLS-1$
    int token = -1;
    MITuple value = new MITuple();

    public int getToken() {
        return token;
    }

    public void setToken(int t) {
        token = t;
    }

    /**
     */
    public String getResultClass() {
        return resultClass;
    }

    public void setResultClass(String type) {
        resultClass = type;
    }

    /** Return all data fields of this record as MITuple
     * @since 4.6
	 */
    public MITuple getFields() {
        return value;
    }

    public MIResult[] getMIResults() {
        return value.getMIResults();
    }

    public void setMIResults(MIResult[] res) {
        value.setMIResults(res);
    }

    /** Return the value of the named field in this record.
	 * @since 4.6
	 */
    public MIValue getField(String name) {
        return value.getField(name);
    }

    @Override
    public String toString() {
        StringBuilder buffer = new StringBuilder();
        if (token > 0) {
            buffer.append(token);
        }
        buffer.append('^').append(resultClass);

        if (value.getMIResults().length != 0)
            buffer.append(value.toString(",", "")); //$NON-NLS-1$ //$NON-NLS-2$
        return buffer.toString();
    }
}
